A database is generally a collection of related information stored in computer readable form. Databases are ubiquitous in modern life. Mobile phones often contain databases of recently and frequently called numbers. The world wide web is comprised of countless databases. Hand held computers are in large part valuable because of the databases they contain. In fact, the databases contained in most computers are far more valuable than the computer hardware itself.
In order to use this valuable information, people must have access to the information. This is frequently accomplished using different types of computers for different situations. For example, a salesman may create a spreadsheet containing pricing information on a desktop computer, and desire to access that information via a small hand held computer while at a customer's premises.
It is often difficult, expensive or impractical to actually access the same database from both types of computers, especially if one is operated in a mobile environment. To overcome this difficulty, a process of synchronizing the contents of databases was developed.
Synchronizing a database is generally a process by which a plurality of copies of a database is maintained such that the information in all copies is the same, or synchronized. The copies need not be bit for bit identical. A synchronization process can accommodate different file structure, operating system and data media requirements. The copies are frequently on different computer systems, but it is sometimes desirable to maintain separate, synchronized databases on the same computer system. Synchronization allows modifications, e.g., additions, deletions and/or changes made to one copy of a database, for example, a copy on a hand held computer, to be reflected to all copies.
Prior art synchronization systems use a “double headed” custom software conduit to synchronize information. As an unfortunate result, such prior art conduits must manage all aspects of synchronization, data retrieval and data storage between two databases, for example on a desktop computer and a hand held computer. Data retrieval and data storage may be particularly difficult in situations involving different types of computers, e.g., hand held versus desktop, which are running different operating systems, e.g., Palm OS versus Microsoft Windows, and which store information in different media, e.g., byte-addressable random access memory versus 512-byte record based rotating magnetic media. In addition, a software conduit designed to synchronize a database on a hand held computer and, for example, a PC must manage the communication between the two computers.
Further, synchronizing data between two database copies is a complex task. Prior art conduits must determine if a difference exists between corresponding records in each copy of a database. In some cases, a record in a first copy may be marked with a “dirty bit” to identify that it has been changed since the last synchronization with a second copy. If the dirty bit is cleared after synchronization with a second copy, and the first copy is subsequently synchronized with a third copy, this method may not identify differences between the first and the third endpoints. As a result, in general prior art conduits must implement multiple methods of identifying and resolving data conflicts between their two copies.
As an unfortunate consequence of these complexities, creating double ended synchronization conduits is beyond the skill level of most practitioners of the software arts, and few hand held applications exploit synchronization as a result. A lack of synchronization conduits limits the usefulness of hand held computers, restricting their many benefits to a mobile workforce.